#ifndef UI_SETTING_H
#define UI_SETTING_H

#include <stdint.h>
#include "lvgl.h"
#include "md_languages.h"
#include "esp_err.h"
#define COLOR_BLACK      lv_color_black() // 黑色
#define COLOR_WHITE      lv_color_white() // 卡片背景色(纯白)
#define UI_SETTING_MAGIC (0xA5A5A5A5)     // 魔数
typedef enum {
    SCREEN_COLOR_WHITE, //白色
    SCREEN_COLOR_BLACK, //黑色
    SCREEN_COLOR_CYAN,  //青色
    SCREEN_COLOR_GRAY,  //灰色
} screen_color_t;

typedef struct {
    uint32_t magic;              //魔数(0xA5A5A5A5)
    lang_type_t language;        //语言
    screen_color_t screen_color; //屏幕颜色
    uint8_t screen_bright;       //屏幕亮度
    bool voice_control;          //语音控制
    bool screenshot_ctl;         //截图控制
    uint8_t font_size;           //字体大小
} ui_setting_t;

// 关键修改：添加结构体类型 (ui_setting_t)
#define UI_SETTING_DEFAULT()                \
    (ui_setting_t)                          \
    {                                       \
        .magic = UI_SETTING_MAGIC,          \
        .language = LANG_US,                \
        .screen_color = SCREEN_COLOR_WHITE, \
        .screen_bright = 80,                \
        .voice_control = false,             \
        .screenshot_ctl = true,             \
        .font_size = 16,                    \
    }

/*从nvs中读取设置*/
esp_err_t load_ui_setting(void);
esp_err_t set_ui_setting(ui_setting_t *pUi_Setting, bool is_to_flash);
esp_err_t ui_setting_load_default(bool is_to_flash);
void ui_setting_load_after_boot(void);
/***********************语言设置****************************/
esp_err_t set_screen_language(lang_type_t language, bool is_to_flash);
lang_type_t get_screen_language(void);
/***********************语言设置 END****************************/
/***********************屏幕颜色设置****************************/
esp_err_t set_screen_color(screen_color_t color, bool is_to_flash);
uint32_t get_screen_color_val(void);
screen_color_t get_screen_color(void);
/**
 * @brief 获取按钮字体颜色
 * @return 根据屏幕主题返回适配的字体颜色
 */
lv_color_t get_btn_font_color(void);
/***********************屏幕颜色设置 END****************************/
/***********************屏幕亮度设置****************************/
/*
 * @brief 设置屏幕亮度
 * @param bright 亮度值，范围0-100
*/
esp_err_t set_screen_bright(uint8_t bright, bool is_to_flash);
uint8_t get_screen_bright(void);
/***********************屏幕亮度设置 END****************************/
/***********************语音控制设置****************************/
esp_err_t set_voice_control(bool is_open, bool is_to_flash);
bool get_voice_control(void);
void is_open_voice_control(void); //在开机音乐完成之后，判断是否打开语音控制
/***********************语音控制设置 END****************************/
/***********************截图设置****************************/
esp_err_t set_screenshot_control(bool is_open, bool is_to_flash);
bool get_screenshot_control(void);
/***********************截图设置 END****************************/
#endif //UI_SETTING_H
